package com.bjpowernode.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @ClassName MyController
 * @Description 当@RequestMapping中有公共的部分时，可以将公共部分放到类的上边
 * @Author hhwu
 * @Date 2022/3/10 13:04
 * Version 1.0
 **/

@Controller//创建处理器对象，和@Service,@Component一样
public class MyController {
    @RequestMapping("/doForward.do")
    public ModelAndView doSome() {
        /**
         * @Author hhwu
         * @Description //TODO 语法：setViewName("forward:视图文件的完整路径“)
         * forward和redirect不和视图解析器一起使用，就当项目中没有视图解析器
         * @Date 13:19 2022/3/10
         * @Param []
         * @return org.springframework.web.servlet.ModelAndView
         **/
        //service处理

        ModelAndView mv = new ModelAndView();
        mv.addObject("msg", "使用springmvc开发web");
        mv.addObject("fun", "执行的是doSome方法");

//        默认转发，配置了视图解析器后，只能转发到视图解析器路径+""的路径下
//        mv.setViewName("show");
        //显式转发，特点是可以转发到视图解析器指定路径之外的任意路径中
        mv.setViewName("forward:/hello.jsp");//完整路径

        return mv;
    }

    @RequestMapping("/doRedirect.do")
    public ModelAndView doRedirect(String name, Integer age) {
        /**
         * @Author hhwu
         * @Description //TODO 语法：setViewName("redirect:视图文件的完整路径“)
         * forward和redirect不和视图解析器一起使用，就当项目中没有视图解析器
         * 1. 框架会把model中的简单类型的数据，转为string，作为hello.jsp的get请求参数使用。
         *      目的是在doRedirect.do和hello.jsp两次请求之间传递数据。但是想在第二次响应中获取第一次
         *      请求的值，需要按照2. 执行
         *
         * 2. 在目标hello.jsp页面可以使用参数集合对象${param}获取请求参数值
         * ${param.msg}
         *
         * 3. 重定向不能访问WEB-INF的资源
         *
         * @Date 19:48 2022/3/14
         * @Param []
         * @return org.springframework.web.servlet.ModelAndView
         **/
        //service处理

        ModelAndView mv = new ModelAndView();
        mv.addObject("myname", name);
        mv.addObject("myage", age);

        //重定向，特点是可以转发到视图解析器指定路径之外的任意路径中
        mv.setViewName("redirect:/hello1.jsp");//完整路径

        return mv;
    }

}
